<?php 
   /**
    * Classe Campo
    * @abstract Classe responsável pela construção e tratamento de campos de formulários
    * @author Edson Sguizzato
    */
   Class Campo{
      
      /**
       * Contrutor
       * @param none
       * @return none
       */
      public function __construct(){}
      
      /**
       * Método para criação de campos texto. Obrigatórios ou não.
       * @param string $fieldName 
       * @param boolen $required
       * @return string
       */
      public static function criarCampoTexto($fieldName,$required){
         if ($required)
            return "<input type=\"text\" name=\"$fieldName\" required>";
         else
            return "<input type=\"text\" name=\"$fieldName\">";
      }//fim método criarCampoTexto
      
      /**
       * Método para criação de campos email. Obrigatórios ou não.
       * @param string $fieldName
       * @param boolean $required
       * @return string
       */
      public static function criarCampoEmail($fieldName,$required){
         if ($required)
            return "<input type=\"email\" name=\"$fieldName\" required>";
         else
            return "<input type=\"email\" name=\"$fieldName\">";
      }//fim método criarCampoEmail
      
      /**
       * Método para criação de campos senha. Todos os campos senha são de preenchimento obrigatório.
       * @param string $fieldName
       * @return string
       */
      public static function criarCampoSenha($fieldName){
         return "<input type=\"password\" name=\"$fieldName\" required>";
      }//fim método criarCampoSenha

      /**
       * Método para criação de campos data (dd/mm/aaaa). Obrigatório ou não.
       * @param string $fieldName
       * @param boolean $required
       * @return string
       */
      public static function criarCampoData($fieldName,$required){
         if ($required)
            return "<input type=\"date\" name=\"$fieldName\" required>";
         else
            return "<input type=\"date\" name=\"$fieldName\">";
      }//fim método criarCampoData
      
      /**
       * Método para criação de campos número, que possibilita ao usuário seleciolar um número entre um valores determinados.
       * Pode ser definido o intervalo de incremento ou decremento e o valor padrão a ser exibido.
       * @param string $fieldName
       * @param integer $min
       * @param integer $max
       * @param integer $step Default=1
       * @param boolean $required
       * @return string
       */
      public static function criarCampoNumero($fieldName,$min,$max,$step,$required){
         ($step == "")? $step="1" : $step = $Step;
         if ($required)
            return "<input type=\"number\" name=\"$fieldName\" min=\"$min\" max=\"$max\" step=\"$step\" required>";
         else
            return "<input type=\"number\" name=\"$fieldName\" min=\"$min\" max=\"$max\" step=\"$step\">";
      }//fim método criarCampoNumero
      
      /**
       * Método para criação de campos de pesquisa, que se comportam como campos textos, mas têm opção para limpar termo digitado
       * @param string $fieldName
       * @param boolean $required
       * @return string
       */
      public static function criarCampoPesquisa($fieldName,$required){
         if($required)
            return "<input type=\"search\" name=\"$fieldName\" required>";
         else
            return "<input type=\"search\" name=\"$fieldName\">";
      }//fim criarCampoPesquisa
      
      public static function criarCampoCheckbox($fieldName){
         
      }
      
      /**
       * Método para criação de botão que envia dados de formulários.
       * @param string $label
       * @return string
       */
      public static function botaoEnviar($label){
         return "<input type=\"submit\" value=\"$label\">";
      }//fim método botaoEnviar
      
   }//fim classe Campo
?>